<template>
  <div class="city_body">
    <div class="city_list" ref="box">
      <div class="city_hot">
        <h2>热门城市</h2>
        <ul class="clearfix">
          <li
            v-for="item in hot"
            :key="item.id"
            @click="changeCity(item.id, item.name)"
          >
            {{ item.name }}
          </li>
        </ul>
      </div>
      <div class="city_sort">
        <div v-for="vla in cities" :key="vla.index">
          <h2 ref="h2">{{ vla.index }}</h2>
          <ul>
            <li
              v-for="city in vla.list"
              :key="city.id"
              @click="changeCity(item.id, item.name)"
            >
              {{ city.name }}
            </li>
          </ul>
        </div>
      </div>
    </div>
    <div class="city_index">
      <ul>
        <li
          v-for="(Group, index) in cities"
          :key="Group.index"
          @click="goTocity(index)"
          :class="{ active: index === attem }"
        >
          {{ Group.index }}
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
export default {
  name: "city",
  data() {
    return {
      hot: [],
      cities: [],
      attem: -1,
    };
  },
  methods: {
    goTocity(index) {
      this.$refs.box.scrollTop = this.$refs.h2[index].offsetTop;
      this.attem = index;
    },
    changeCity(id, nm) {
      this.$store.commit("CITY_INFO", { id, nm });
      this.$router.push("/movie/nowplaying");
    },
  },
  async created() {
    let hot = window.localStorage.getItem("hot");
    let cities = window.localStorage.getItem("cities");
    if (hot && cities) {
      this.hot = JSON.parse(hot);
      this.cities = JSON.parse(cities);
      return;
    }
    let data = await this.$axios.get("/api/city");
    this.hot = data.data.hot;
    this.cities = data.data.cities;
    window.localStorage.setItem("hot", JSON.stringify(data.data.hot));
    window.localStorage.setItem("cities", JSON.stringify(data.data.cities));
  },
};
</script>

<style scoped>
#content .city_body {
  margin-top: 45px;
  display: flex;
  width: 100%;
  position: absolute;
  top: 0;
  bottom: 0;
}
.city_body .city_list {
  flex: 1;
  overflow: auto;
  background: #fff5f0;
}
.city_body .city_list::-webkit-scrollbar {
  background-color: transparent;
  width: 0;
}
.city_body .city_hot {
  margin-top: 20px;
}
.city_body .city_hot h2 {
  padding-left: 15px;
  line-height: 30px;
  font-size: 14px;
  background: #f0f0f0;
  font-weight: normal;
}
.city_body .city_hot ul li {
  float: left;
  background: #fff;
  width: 29%;
  height: 33px;
  margin-top: 15px;
  margin-left: 3%;
  padding: 0 4px;
  border: 1px solid #e6e6e6;
  border-radius: 3px;
  line-height: 33px;
  text-align: center;
  box-sizing: border-box;
}
.city_body .city_sort div {
  margin-top: 20px;
}
.city_body .city_sort h2 {
  padding-left: 15px;
  line-height: 30px;
  font-size: 14px;
  background: #f0f0f0;
  font-weight: normal;
}
.city_body .city_sort ul {
  padding-left: 10px;
  margin-top: 10px;
}
.city_body .city_sort ul li {
  line-height: 30px;
  line-height: 30px;
}
.city_body .city_index {
  width: 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  border-left: 1px #e6e6e6 solid;
}
.city_body .city_index ul li.active {
  color: white;
  background: red;
}
</style>